package beans;

import java.util.ArrayList;

import tela.LogicaCliente;
import tela.Posicao;

public class BispoMoves extends AbstractMoves {

	public BispoMoves(int[][] matriz, Posicao posicao, LogicaCliente lc) {
		super(matriz, posicao, lc);
	}

	@Override
	public ArrayList<Posicao> calcula() {
		int j = posicao.getJ() - 1 ;
		if(matriz[posicao.getI()][posicao.getJ()] < 10){//branco
			for(int i= posicao.getI() - 1; i >= 0 ; i--){
				if(j<0)break;		
				else if(matriz[i][j] == Pecas.VAZIO){
				botoesPintar.add(new Posicao(i, j));		
				}
				else if( matriz[i][j] > 10){
				botoesPintar.add(new Posicao(i, j));
				break;
				}
				else
					break;
				
				j--;		
			}
			j = posicao.getJ() + 1;
			for(int i= posicao.getI() - 1; i >= 0 ; i--){
				if(j>=8)break;	
				else if(matriz[i][j] == Pecas.VAZIO){
				botoesPintar.add(new Posicao(i, j));	
				}
				else if( matriz[i][j] > 10){
					botoesPintar.add(new Posicao(i, j));
					break;
				}
				else
					break;
				j++;
			}
			j = posicao.getJ() + 1;
			for(int i= posicao.getI() + 1; i < 8 ; i++){
				if(j>=8)break;
				else if(matriz[i][j] == Pecas.VAZIO){
				botoesPintar.add(new Posicao(i, j));
				}
				else if( matriz[i][j] > 10){
					botoesPintar.add(new Posicao(i, j));
					break;
				}
				else
					break;
				j++;
			}
			j = posicao.getJ()- 1;
			for(int i= posicao.getI() + 1; i < 8 ; i++){
				if(j<0)break;
				else if(matriz[i][j] == Pecas.VAZIO){
				botoesPintar.add(new Posicao(i, j));
				}
				else if( matriz[i][j] > 10){
					botoesPintar.add(new Posicao(i, j));
					break;
					}
				else
					break;
				j--;
			}
		}
		else{		//branco
				for(int i= posicao.getI()- 1; i >= 0 ; i--){
					if(j<0)break;
					else if(matriz[i][j] == Pecas.VAZIO){
					botoesPintar.add(new Posicao(i, j));
					}
					else if(matriz[i][j] < 10){
						botoesPintar.add(new Posicao(i, j));
						break;
					}
					else
						break;
					
					j--;
				}
				j = posicao.getJ() + 1;
				for(int i= posicao.getI() - 1; i >= 0 ; i--){
					if(j>=8)break;
					else if(matriz[i][j] == Pecas.VAZIO){
					botoesPintar.add(new Posicao(i, j));
					}else if(matriz[i][j] < 10){
						botoesPintar.add(new Posicao(i, j));
						break;
					}
					else
						break;
					j++;
				}
				j = posicao.getJ() + 1;
				for(int i= posicao.getI() + 1; i < 8 ; i++){
					if(j>=8)break;
					else if(matriz[i][j] == Pecas.VAZIO){
					botoesPintar.add(new Posicao(i, j));	
					}else if(matriz[i][j] < 10){
						botoesPintar.add(new Posicao(i, j));
						break;
					}
					else
						break;
					j++;
				}
				j = posicao.getJ() - 1;
				for(int i= posicao.getI() + 1; i < 8 ; i++){
					if(j<0)break;
					else if(matriz[i][j] == Pecas.VAZIO){
					botoesPintar.add(new Posicao(i, j));
					}else if(matriz[i][j] < 10){
						botoesPintar.add(new Posicao(i, j));
						break;
					}
					else
						break;
					j--;
				}
		}
		return botoesPintar;

	}
}
